home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / windows / win31 / macsyma.arj / MACSDEMO.EXE / BLINALG.OUT < prev    next >
Text File  |  1993-09-15  |  25KB  |  425 lines

  1.  
  2. (c1) /* Demonstration of the BLINALG Package */
  3. (showtime:true,remarray(ms,bs))$
  4. Time= 0 msecs
  5.  
  6. (c2) /* ***********************************************
  7.     LDU DECOMPOSITION OF SQUARE MATRICES
  8. */
  9. /* 1. A symbolic matrix */
  10. ms2:genmatrix(ms,2);
  11. Time= 0 msecs
  12. |$label(0,15,Times New Roman,$(d2$))$matrix(2,2,$sub(ms,1$ina($, )$hinge()1),$sub(ms,1$ina($, )$hinge()2),$sub(ms,2$ina($, )$hinge()1),$sub(ms,2$ina($, )$hinge()2))
  13.  
  14. (c3) ldu_decomp(ms2);
  15. C:\MACGOLD5\share\blinalg.fas being loaded.
  16. Time= 709 msecs
  17. |$label(0,15,Times New Roman,$(d3$))$open([)$matrix(2,2,1,0,$q($sub(ms,2$ina($, )$hinge()1),$sub(ms,1$ina($, )$hinge()1)),1)$ina($, )$hinge()$matrix(2,2,$sub(ms,1$ina($, )$hinge()1),0,0,$sub(ms,2$ina($, )$hinge()2)$in( - )$q($sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1),$sub(ms,1$ina($, )$hinge()1)))$ina($, )$hinge()$matrix(2,2,1,$q($sub(ms,1$ina($, )$hinge()2),$sub(ms,1$ina($, )$hinge()1)),0,1)$close(])
  18.  
  19. (c4) /* 2. A matrix of rational numbers */
  20. (mr[i,j]:=1/(abs(i-j)+1),mr3:genmatrix(mr,3));
  21. Time= 59 msecs
  22. |$label(0,15,Times New Roman,$(d4$))$matrix(3,3,1,$q(1,2),$q(1,3),$q(1,2),1,$q(1,2),$q(1,3),$q(1,2),1)
  23.  
  24. (c5) ldu_decomp(mr3);
  25. Time= 0 msecs
  26. |$label(0,15,Times New Roman,$(d5$))$open([)$matrix(3,3,1,0,0,$q(1,2),1,0,$q(1,3),$q(4,9),1)$ina($, )$hinge()$matrix(3,3,1,0,0,0,$q(3,4),0,0,0,$q(20,27))$ina($, )$hinge()$matrix(3,3,1,$q(1,2),$q(1,3),0,1,$q(4,9),0,0,1)$close(])
  27.  
  28. (c6) /* 3. A floating point matrix */
  29. mf3:sfloat(mr3);
  30. Time= 0 msecs
  31. |$label(0,15,Times New Roman,$(d6$))$matrix(3,3,1.0,0.5,0.33333,0.5,1.0,0.5,0.33333,0.5,1.0)
  32.  
  33. (c7) ldu_decomp(mf3);
  34. Time= 0 msecs
  35. |$label(0,15,Times New Roman,$(d7$))$open([)$matrix(3,3,1,0,0,0.5,1,0,0.33333,0.44444,1)$ina($, )$hinge()$matrix(3,3,1.0,0,0,0,0.75,0,0,0,0.74074)$ina($, )$hinge()$matrix(3,3,1,0.5,0.33333,0,1,0.44444,0,0,1)$close(])
  36.  
  37. (c8) /* Determinants and inverses */
  38. det_by_ldu(ms2);
  39. Time= 49 msecs
  40. |$label(0,15,Times New Roman,$(d8$))$sub(ms,1$ina($, )$hinge()1)$hinge()$in( )$open($()$sub(ms,2$ina($, )$hinge()2)$hinge()$in( - )$q($sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1),$sub(ms,1$ina($, )$hinge()1))$close($))
  41.  
  42. (c9) ratsimp(%-newdet(ms2));
  43. Time= 49 msecs
  44. |$label(0,15,Times New Roman,$(d9$))0
  45.  
  46. (c10) invert_by_ldu(ms2),ratsimp;
  47. C:\MACGOLD5\share\bla_chol.fas being loaded.
  48. Time= 1270 msecs
  49. |$label(0,15,Times New Roman,$(d10$))$matrix(2,2,$q($sub(ms,2$ina($, )$hinge()2),$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1)),$in( - )$q($sub(ms,1$ina($, )$hinge()2),$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1)),$in( - )$q($sub(ms,2$ina($, )$hinge()1),$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1)),$q($sub(ms,1$ina($, )$hinge()1),$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1)))
  50.  
  51. (c11) %.ms2,ratsimp;
  52. Time= 59 msecs
  53. |$label(0,15,Times New Roman,$(d11$))$matrix(2,2,1,0,0,1)
  54.  
  55. (c12) det_by_lduf(mf3);
  56. Time= 0 msecs
  57. |$label(0,15,Times New Roman,$(d12$))0.55556
  58.  
  59. (c13) %-determinant(mf3);
  60. C:\MACGOLD5\share\blinalgl.fas being loaded.
  61. Time= 219 msecs
  62. |$label(0,15,Times New Roman,$(d13$))2.38419e-7
  63.  
  64. (c14) invert_by_lduf(mf3);
  65. Time= 49 msecs
  66. |$label(0,15,Times New Roman,$(d14$))$matrix(3,3,1.35,$in( - )0.6,$in( - )0.15,$in( - )0.6,1.6,$in( - )0.6,$in( - )0.15,$in( - )0.6,1.35)
  67.  
  68. (c15) %.mf3;
  69. Time= 0 msecs
  70. |$label(0,15,Times New Roman,$(d15$))$matrix(3,3,1.0,$in( - )1.49012e-7,$in( - )1.78814e-7,$in( - )1.78814e-7,1.0,0.0,1.1921e-7,4.76838e-7,1.0)
  71.  
  72. (c16) /* ***********************************************
  73.     LU DECOMPOSITION OF SQUARE MATRICES with partial pivoting
  74.     
  75. */
  76. /* 1. Symbolic matrices cannot be handled because of pivoting.
  77.  
  78.    2. A matrix of rational numbers */
  79. lu_decomp(mr3);
  80. C:\MACGOLD5\share\bla_lu.fas being loaded.
  81. Time= 599 msecs
  82. |$label(0,15,Times New Roman,$(d16$))$matrix(3,3,1,$q(1,2),$q(1,3),$q(1,2),$q(3,4),$q(1,3),$q(1,3),$q(4,9),$q(20,27))
  83.  
  84. (c17) /* 3. A floating point matrix */
  85. lu_decompf(mf3);
  86. Time= 0 msecs
  87. |$label(0,15,Times New Roman,$(d17$))$matrix(3,3,1.0,0.5,0.33333,0.5,0.75,0.33333,0.33333,0.44444,0.74074)
  88.  
  89. (c18) /* Determinants and inverses */
  90. det_by_lu(mr3);
  91. Time= 49 msecs
  92. |$label(0,15,Times New Roman,$(d18$))$q(5,9)
  93.  
  94. (c19) %-newdet(mr3);
  95. Time= 0 msecs
  96. |$label(0,15,Times New Roman,$(d19$))0
  97.  
  98. (c20) invert_by_lu(mr3);
  99. Time= 59 msecs
  100. |$label(0,15,Times New Roman,$(d20$))$matrix(3,3,$q(27,20),$in( - )$q(3,5),$in( - )$q(3,20),$in( - )$q(3,5),$q(8,5),$in( - )$q(3,5),$in( - )$q(3,20),$in( - )$q(3,5),$q(27,20))
  101.  
  102. (c21) %.mr3;
  103. Time= 59 msecs
  104. |$label(0,15,Times New Roman,$(d21$))$matrix(3,3,1,0,0,0,1,0,0,0,1)
  105.  
  106. (c22) det_by_luf(mf3);
  107. Time= 0 msecs
  108. |$label(0,15,Times New Roman,$(d22$))0.55556
  109.  
  110. (c23) %-determinant(mf3);
  111. Time= 0 msecs
  112. |$label(0,15,Times New Roman,$(d23$))2.38419e-7
  113.  
  114. (c24) invert_by_luf(mf3);
  115. Time= 0 msecs
  116. |$label(0,15,Times New Roman,$(d24$))$matrix(3,3,1.35,$in( - )0.6,$in( - )0.15,$in( - )0.6,1.6,$in( - )0.6,$in( - )0.15,$in( - )0.6,1.35)
  117.  
  118. (c25) %.mf3;
  119. Time= 0 msecs
  120. |$label(0,15,Times New Roman,$(d25$))$matrix(3,3,1.0,1.1921e-7,0.0,$in( - )5.96046e-8,1.0,$in( - )2.38419e-7,0.0,4.76838e-7,1.0)
  121.  
  122. (c26) /* ***********************************************
  123.     QR DECOMPOSITION OF SQUARE MATRICES
  124. */
  125.  
  126. /* 1. A symbolic matrix */
  127. qr:qr_decomp(ms2),ratsimp;
  128. Time= 2309 msecs
  129. |$label(0,15,Times New Roman,$(d26$))$open([)$matrix(2,2,$q($sub(ms,1$ina($, )$hinge()1),$sqrt($sup($sub(ms,2$ina($, )$hinge()1),2)$in( + )$sup($sub(ms,1$ina($, )$hinge()1),2))),$in( - )$q($sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sub(ms,1$ina($, )$hinge()2)$in( )$sup($sub(ms,2$ina($, )$hinge()1),2),$sqrt($sup($sub(ms,2$ina($, )$hinge()1),2)$in( + )$sup($sub(ms,1$ina($, )$hinge()1),2))$in( )$sqrt($sup($sub(ms,1$ina($, )$hinge()1),2)$in( )$sup($sub(ms,2$ina($, )$hinge()2),2)$in( - )2$in( )$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( + )$sup($sub(ms,1$ina($, )$hinge()2),2)$in( )$sup($sub(ms,2$ina($, )$hinge()1),2))),$q($sub(ms,2$ina($, )$hinge()1),$sqrt($sup($sub(ms,2$ina($, )$hinge()1),2)$in( + )$sup($sub(ms,1$ina($, )$hinge()1),2))),$q($sup($sub(ms,1$ina($, )$hinge()1),2)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1),$sqrt($sup($sub(ms,2$ina($, )$hinge()1),2)$in( + )$sup($sub(ms,1$ina($, )$hinge()1),2))$in( )$sqrt($sup($sub(ms,1$ina($, )$hinge()1),2)$in( )$sup($sub(ms,2$ina($, )$hinge()2),2)$in( - )2$in( )$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( + )$sup($sub(ms,1$ina($, )$hinge()2),2)$in( )$sup($sub(ms,2$ina($, )$hinge()1),2))))$ina($, )$hinge()$matrix(2,2,$sqrt($sup($sub(ms,2$ina($, )$hinge()1),2)$in( + )$sup($sub(ms,1$ina($, )$hinge()1),2)),$q($sub(ms,2$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( + )$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,1$ina($, )$hinge()2),$sqrt($sup($sub(ms,2$ina($, )$hinge()1),2)$in( + )$sup($sub(ms,1$ina($, )$hinge()1),2))),0,$q($sqrt($sup($sub(ms,1$ina($, )$hinge()1),2)$in( )$sup($sub(ms,2$ina($, )$hinge()2),2)$in( - )2$in( )$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,1$ina($, )$hinge()2)$in( )$sub(ms,2$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( + )$sup($sub(ms,1$ina($, )$hinge()2),2)$in( )$sup($sub(ms,2$ina($, )$hinge()1),2)),$sqrt($sup($sub(ms,2$ina($, )$hinge()1),2)$in( + )$sup($sub(ms,1$ina($, )$hinge()1),2))))$close(])
  130.  
  131. (c27) /* Note that R is upper triangular. Check that Q is orthogonal: */
  132. q:part(qr,1)$
  133. Time= 0 msecs
  134.  
  135. (c28) transpose(q).q,ratsimp;
  136. Time= 279 msecs
  137. |$label(0,15,Times New Roman,$(d28$))$matrix(2,2,1,0,0,1)
  138.  
  139. (c29) /* Check that q.r=ms2: */
  140. q.part(qr,2)-ms2,ratsimp;
  141. Time= 159 msecs
  142. |$label(0,15,Times New Roman,$(d29$))$matrix(2,2,0,0,0,0)
  143.  
  144. (c30) /* 2. A matrix of rational numbers */
  145. qr:qr_decomp(mr3);
  146. Time= 59 msecs
  147. |$label(0,15,Times New Roman,$(d30$))$open([)$matrix(3,3,$q(6,7),$in( - )$q(5$in( )$sqrt(2),14),$in( - )$q(1,7$in( )$sqrt(2)),$q(3,7),$q(4$in( )$sqrt(2),7),$in( - )$q(4,7$in( )$sqrt(2)),$q(2,7),$q(3$in( )$sqrt(2),14),$q(9,7$in( )$sqrt(2)))$ina($, )$hinge()$matrix(3,3,$q(7,6),1,$q(11,14),0,$q(1,$sqrt(2)),$q(8$in( )$sqrt(2),21),0,0,$q(10$in( )$sqrt(2),21))$close(])
  148.  
  149. (c31) /* Note that R is upper triangular. Check that Q is orthogonal: */
  150. q:part(qr,1)$
  151. Time= 0 msecs
  152.  
  153. (c32) /* Check that q.r=mr3: */
  154. q.part(qr,2)-mr3;
  155. Time= 49 msecs
  156. |$label(0,15,Times New Roman,$(d32$))$matrix(3,3,0,0,0,0,0,0,0,0,0)
  157.  
  158. (c33) transpose(q).q;
  159. Time= 59 msecs
  160. |$label(0,15,Times New Roman,$(d33$))$matrix(3,3,1,0,0,0,1,0,0,0,1)
  161.  
  162. (c34) /* 3. A floating point matrix */
  163. qr:qr_decomp(mf3);
  164. Time= 0 msecs
  165. |$label(0,15,Times New Roman,$(d34$))$open([)$matrix(3,3,0.85714,$in( - )0.50508,$in( - )0.10102,0.42857,0.80812,$in( - )0.40406,0.28571,0.30305,0.90914)$ina($, )$hinge()$matrix(3,3,1.16667,1.0,0.78571,0.0,0.70711,0.53875,0.0,0.0,0.67343)$close(])
  166.  
  167. (c35) /* ***********************************************
  168.     CHOLESKY FACTORIZATION OF POSITIVE DEFINITE SQUARE MATRICES
  169. */
  170. /* 1. A symbolic matrix (with no check for positive definiteness) */
  171. cholesky_l(ms2);
  172. Time= 0 msecs
  173. |$label(0,15,Times New Roman,$(d35$))$matrix(2,2,$sqrt($sub(ms,1$ina($, )$hinge()1)),0,$q($sub(ms,2$ina($, )$hinge()1),$sqrt($sub(ms,1$ina($, )$hinge()1))),$sqrt($sub(ms,2$ina($, )$hinge()2)$in( - )$q($sup($sub(ms,2$ina($, )$hinge()1),2),$sub(ms,1$ina($, )$hinge()1))))
  174.  
  175. (c36) /* 2. A matrix of rational numbers */
  176. cholesky_l(mr3);
  177. Time= 0 msecs
  178. |$label(0,15,Times New Roman,$(d36$))$matrix(3,3,1,0,0,$q(1,2),$q($sqrt(3),2),0,$q(1,3),$q(2,3$in( )$sqrt(3)),$q(2$in( )$sqrt(5),3$in( )$sqrt(3)))
  179.  
  180. (c37) /* 3. A floating point matrix */
  181. cholesky_lf(mf3);
  182. Time= 0 msecs
  183. |$label(0,15,Times New Roman,$(d37$))$matrix(3,3,1.0,0.0,0.0,0.5,0.86602,0.0,0.33333,0.3849,0.86066)
  184.  
  185. (c38) /* Inversion */
  186. (ms2sym:copymatrix(ms2), ms2sym[2,1]:ms2[1,2],ms2sym);
  187. Time= 49 msecs
  188. |$label(0,15,Times New Roman,$(d38$))$matrix(2,2,$sub(ms,1$ina($, )$hinge()1),$sub(ms,1$ina($, )$hinge()2),$sub(ms,1$ina($, )$hinge()2),$sub(ms,2$ina($, )$hinge()2))
  189.  
  190. (c39) invert_sym_by_chol(ms2sym),ratsimp;
  191. Time= 109 msecs
  192. |$label(0,15,Times New Roman,$(d39$))$matrix(2,2,$q($sub(ms,2$ina($, )$hinge()2),$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sup($sub(ms,1$ina($, )$hinge()2),2)),$in( - )$q($sub(ms,1$ina($, )$hinge()2),$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sup($sub(ms,1$ina($, )$hinge()2),2)),$in( - )$q($sub(ms,1$ina($, )$hinge()2),$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sup($sub(ms,1$ina($, )$hinge()2),2)),$q($sub(ms,1$ina($, )$hinge()1),$sub(ms,1$ina($, )$hinge()1)$in( )$sub(ms,2$ina($, )$hinge()2)$in( - )$sup($sub(ms,1$ina($, )$hinge()2),2)))
  193.  
  194. (c40) %.ms2sym,ratsimp;
  195. Time= 49 msecs
  196. |$label(0,15,Times New Roman,$(d40$))$matrix(2,2,1,0,0,1)
  197.  
  198. (c41) invert_sym_by_chol(mr3);
  199. Time= 169 msecs
  200. |$label(0,15,Times New Roman,$(d41$))$matrix(3,3,$q(27,20),$in( - )$q(3,5),$in( - )$q(3,20),$in( - )$q(3,5),$q(8,5),$in( - )$q(3,5),$in( - )$q(3,20),$in( - )$q(3,5),$q(27,20))
  201.  
  202. (c42) %.mr3;
  203. Time= 0 msecs
  204. |$label(0,15,Times New Roman,$(d42$))$matrix(3,3,1,0,0,0,1,0,0,0,1)
  205.  
  206. (c43) invert_sym_by_cholf(mf3);
  207. Time= 59 msecs
  208. |$label(0,15,Times New Roman,$(d43$))$matrix(3,3,1.35,$in( - )0.6,$in( - )0.15,$in( - )0.6,1.6,$in( - )0.6,$in( - )0.15,$in( - )0.6,1.35)
  209.  
  210. (c44) %.mf3;
  211. Time= 0 msecs
  212. |$label(0,15,Times New Roman,$(d44$))$matrix(3,3,1.0,$in( - )2.98024e-7,$in( - )1.1921e-7,0.0,1.0,2.38419e-7,1.1921e-7,2.38419e-7,1.0)
  213.  
  214. (c45) /* ***********************************************
  215.      INVERSION OF TOEPLITZ MATRICES
  216. */
  217. load(matfuncs)$
  218. C:\MACGOLD5\share\MATFUNCS.fas being loaded.
  219. Time= 879 msecs
  220.  
  221. (c46) /* 1. Symbolic Toeplitz Matrices */
  222. toeps2:toeplitz(2);
  223. Time= 0 msecs
  224. |$label(0,15,Times New Roman,$(d46$))$matrix(2,2,t2,t1,t3,t2)
  225.  
  226. (c47) factor(invert_toeplitz(toeps2));
  227. C:\MACGOLD5\share\bla_toep.fas being loaded.
  228. Time= 1099 msecs
  229. |$label(0,15,Times New Roman,$(d47$))$matrix(2,2,$in( - )$q(t2,t1$in( )t3$in( - )$sup(t2,2)),$q(t1,t1$in( )t3$in( - )$sup(t2,2)),$q(t3,t1$in( )t3$in( - )$sup(t2,2)),$in( - )$q(t2,t1$in( )t3$in( - )$sup(t2,2)))
  230.  
  231. (c48) factor(toeps2.%);
  232. Time= 49 msecs
  233. |$label(0,15,Times New Roman,$(d48$))$matrix(2,2,1,0,0,1)
  234.  
  235. (c49) /* 2. Numerical Toeplitz Matrices */
  236. toepn3:subst([t1=1/2,t2=1,t3=2,t4=2,t5=-1/3],toeplitz(3));
  237. Time= 49 msecs
  238. |$label(0,15,Times New Roman,$(d49$))$matrix(3,3,2,1,$q(1,2),2,2,1,$in( - )$q(1,3),2,2)
  239.  
  240. (c50) invert_toeplitz(toepn3);
  241. Time= 0 msecs
  242. |$label(0,15,Times New Roman,$(d50$))$matrix(3,3,1,$in( - )$q(1,2),0,$in( - )$q(13,6),$q(25,12),$in( - )$q(1,2),$q(7,3),$in( - )$q(13,6),1)
  243.  
  244. (c51) toepn3.%;
  245. Time= 49 msecs
  246. |$label(0,15,Times New Roman,$(d51$))$matrix(3,3,1,0,0,0,1,0,0,0,1)
  247.  
  248. (c52) /* 3. Floating Point Toeplitz Matrices */
  249. toepf3:sfloat(toepn3);
  250. Time= 0 msecs
  251. |$label(0,15,Times New Roman,$(d52$))$matrix(3,3,2.0,1.0,0.5,2.0,2.0,1.0,$in( - )0.33333,2.0,2.0)
  252.  
  253. (c53) invert_toeplitzf(toepf3);
  254. Time= 49 msecs
  255. |$label(0,15,Times New Roman,$(d53$))$matrix(3,3,1.0,$in( - )0.5,0.0,$in( - )2.16667,2.08333,$in( - )0.5,2.33333,$in( - )2.16667,1.0)
  256.  
  257. (c54) toepf3.%;
  258. Time= 0 msecs
  259. |$label(0,15,Times New Roman,$(d54$))$matrix(3,3,1.0,0.0,0.0,9.53675e-7,1.0,0.0,1.90736e-6,0.0,1.0)
  260.  
  261. (c55) /* ***********************************************
  262.      INVERSION OF SYMMETRIC TOEPLITZ MATRICES
  263. */
  264. stoepsa[i,j]:=concat(t,abs(i-j));
  265. Time= 0 msecs
  266. |$label(0,15,Times New Roman,$(d55$))$sub(stoepsa,i$ina($, )$hinge()j)$hinge()$in( := )concat$paren(t$ina($, )$hinge()$paren(i$in( - )j,|,|))
  267.  
  268. (c56) /* 1. Symbolic Symmetric Toeplitz Matrices */
  269. stoeps2:genmatrix(stoepsa,2);
  270. Time= 49 msecs
  271. |$label(0,15,Times New Roman,$(d56$))$matrix(2,2,t0,t1,t1,t0)
  272.  
  273. (c57) factor(invert_symtoeplitz(stoeps2));
  274. Time= 219 msecs
  275. |$label(0,15,Times New Roman,$(d57$))$matrix(2,2,$in( - )$q(t0,$paren(t1$in( - )t0,$(,$))$in( )$paren(t1$in( + )t0,$(,$))),$q(t1,$paren(t1$in( - )t0,$(,$))$in( )$paren(t1$in( + )t0,$(,$))),$q(t1,$paren(t1$in( - )t0,$(,$))$in( )$paren(t1$in( + )t0,$(,$))),$in( - )$q(t0,$paren(t1$in( - )t0,$(,$))$in( )$paren(t1$in( + )t0,$(,$))))
  276.  
  277. (c58) factor(stoeps2.%);
  278. Time= 109 msecs
  279. |$label(0,15,Times New Roman,$(d58$))$matrix(2,2,1,0,0,1)
  280.  
  281. (c59) /* 2. Numerical Symmetric Toeplitz Matrices */
  282. stoepn3:subst([t0=1,t1=1/2,t2=1/5],genmatrix(stoepsa,3));
  283. Time= 49 msecs
  284. |$label(0,15,Times New Roman,$(d59$))$matrix(3,3,1,$q(1,2),$q(1,5),$q(1,2),1,$q(1,2),$q(1,5),$q(1,2),1)
  285.  
  286. (c60) invert_symtoeplitz(stoepn3);
  287. Time= 0 msecs
  288. |$label(0,15,Times New Roman,$(d60$))$matrix(3,3,$q(75,56),$in( - )$q(5,7),$q(5,56),$in( - )$q(5,7),$q(12,7),$in( - )$q(5,7),$q(5,56),$in( - )$q(5,7),$q(75,56))
  289.  
  290. (c61) stoepn3.%;
  291. Time= 0 msecs
  292. |$label(0,15,Times New Roman,$(d61$))$matrix(3,3,1,0,0,0,1,0,0,0,1)
  293.  
  294. (c62) /* 3. Floating Point Symmetric Toeplitz Matrices */
  295. stoepf3:sfloat(stoepn3);
  296. Time= 0 msecs
  297. |$label(0,15,Times New Roman,$(d62$))$matrix(3,3,1.0,0.5,0.2,0.5,1.0,0.5,0.2,0.5,1.0)
  298.  
  299. (c63) invert_symtoeplitz(stoepf3);
  300. Time= 0 msecs
  301. |$label(0,15,Times New Roman,$(d63$))$matrix(3,3,1.33929,$in( - )0.71429,0.08929,$in( - )0.71429,1.71428,$in( - )0.71429,0.08929,$in( - )0.71429,1.33929)
  302.  
  303. (c64) stoepf3.%;
  304. Time= 0 msecs
  305. |$label(0,15,Times New Roman,$(d64$))$matrix(3,3,1.0,5.96046e-8,0.0,1.49012e-7,1.0,2.38419e-7,$in( - )5.96046e-8,0.0,1.0)
  306.  
  307. (c65) /* ***********************************************
  308.      INVERSION OF HANKEL MATRICES
  309. */
  310.  
  311. /* 1. Symbolic Hankel Matrices */
  312. (hanksa[i,j]:=concat(h,i+j-1),hanks2:genmatrix(hanksa,2));
  313. Time= 0 msecs
  314. |$label(0,15,Times New Roman,$(d65$))$matrix(2,2,h1,h2,h2,h3)
  315.  
  316. (c66) factor(invert_hankel(hanks2));
  317. Time= 169 msecs
  318. |$label(0,15,Times New Roman,$(d66$))$matrix(2,2,$q(h3,h1$in( )h3$in( - )$sup(h2,2)),$in( - )$q(h2,h1$in( )h3$in( - )$sup(h2,2)),$in( - )$q(h2,h1$in( )h3$in( - )$sup(h2,2)),$q(h1,h1$in( )h3$in( - )$sup(h2,2)))
  319.  
  320. (c67) factor(hanks2.%);
  321. Time= 59 msecs
  322. |$label(0,15,Times New Roman,$(d67$))$matrix(2,2,1,0,0,1)
  323.  
  324. (c68) /* 2. Numerical Hankel Matrices */
  325. hankn3:subst([h1=1,h2=1/2,h3=1/5,h4=1/6,h5=-1/3],genmatrix(hanksa,3));
  326. Time= 0 msecs
  327. |$label(0,15,Times New Roman,$(d68$))$matrix(3,3,1,$q(1,2),$q(1,5),$q(1,2),$q(1,5),$q(1,6),$q(1,5),$q(1,6),$in( - )$q(1,3))
  328.  
  329. (c69) invert_hankel(hankn3)$
  330. Time= 0 msecs
  331.  
  332. (c70) hankn3.%;
  333. Time= 0 msecs
  334. |$label(0,15,Times New Roman,$(d70$))$matrix(3,3,1,0,0,0,1,0,0,0,1)
  335.  
  336. (c71) /* 3. Floating Point Hankel Matrices */
  337. hankf3:sfloat(hankn3);
  338. Time= 59 msecs
  339. |$label(0,15,Times New Roman,$(d71$))$matrix(3,3,1.0,0.5,0.2,0.5,0.2,0.16667,0.2,0.16667,$in( - )0.33333)
  340.  
  341. (c72) invert_hankelf(hankf3)$
  342. Time= 0 msecs
  343.  
  344. (c73) hankf3.%;
  345. Time= 0 msecs
  346. |$label(0,15,Times New Roman,$(d73$))$matrix(3,3,1.0,3.09944e-6,2.14577e-6,$in( - )1.43052e-6,1.0,3.57629e-6,$in( - )1.43052e-6,1.90736e-6,1.0)
  347.  
  348. (c74) /* ***********************************************
  349.      INVERSION OF PERSYMMETRIC HANKEL MATRICES
  350. */
  351. (pshanks2a[i,j]:=concat(h,abs(i+j-3)),
  352.  pshanks3a[i,j]:=concat(h,abs(i+j-4)));
  353. Time= 0 msecs
  354. |$label(0,15,Times New Roman,$(d74$))$sub(pshanks3a,i$ina($, )$hinge()j)$hinge()$in( := )concat$paren(h$ina($, )$hinge()$paren(i$in( + )j$in( - )4,|,|))
  355.  
  356. (c75) /* 1. Symbolic Symmetric Hankel Matrices */
  357. pshanks3:genmatrix(pshanks3a,3);
  358. Time= 49 msecs
  359. |$label(0,15,Times New Roman,$(d75$))$matrix(3,3,h2,h1,h0,h1,h0,h1,h0,h1,h2)
  360.  
  361. (c76) invert_psymhankel(pshanks3)$
  362. Time= 49 msecs
  363.  
  364. (c77) pshanks3.%,factor;
  365. Time= 8180 msecs
  366. |$label(0,15,Times New Roman,$(d77$))$matrix(3,3,1,0,0,0,1,0,0,0,1)
  367.  
  368. (c78) /* 2. Numerical Symmetric Hankel Matrices */
  369. pshankn3:subst([h0=1,h1=1/2,h2=1/5],pshanks3);
  370. Time= 0 msecs
  371. |$label(0,15,Times New Roman,$(d78$))$matrix(3,3,$q(1,5),$q(1,2),1,$q(1,2),1,$q(1,2),1,$q(1,2),$q(1,5))
  372.  
  373. (c79) invert_psymhankel(pshankn3)$
  374. Time= 59 msecs
  375.  
  376. (c80) pshankn3.%;
  377. Time= 0 msecs
  378. |$label(0,15,Times New Roman,$(d80$))$matrix(3,3,1,0,0,0,1,0,0,0,1)
  379.  
  380. (c81) /* 3. Floating Point Symmetric Hankel Matrices */
  381. pshankf3:sfloat(pshankn3);
  382. Time= 0 msecs
  383. |$label(0,15,Times New Roman,$(d81$))$matrix(3,3,0.2,0.5,1.0,0.5,1.0,0.5,1.0,0.5,0.2)
  384.  
  385. (c82) invert_psymhankelf(pshankf3)$
  386. Time= 59 msecs
  387.  
  388. (c83) pshankf3.%;
  389. Time= 0 msecs
  390. |$label(0,15,Times New Roman,$(d83$))$matrix(3,3,1.0,0.0,$in( - )5.96046e-8,2.38419e-7,1.0,1.49012e-7,0.0,5.96046e-8,1.0)
  391.  
  392. (c84) /* ***********************************************
  393.     INVERSION OF HILBERT MATRICES
  394. */
  395. (hilberta[i,j]:=1/(i+j-1),hilbert10:genmatrix(hilberta,10));
  396. Time= 219 msecs
  397. |$label(0,15,Times New Roman,$(d84$))$matrix(10,10,1,$q(1,2),$q(1,3),$q(1,4),$q(1,5),$q(1,6),$q(1,7),$q(1,8),$q(1,9),$q(1,10),$q(1,2),$q(1,3),$q(1,4),$q(1,5),$q(1,6),$q(1,7),$q(1,8),$q(1,9),$q(1,10),$q(1,11),$q(1,3),$q(1,4),$q(1,5),$q(1,6),$q(1,7),$q(1,8),$q(1,9),$q(1,10),$q(1,11),$q(1,12),$q(1,4),$q(1,5),$q(1,6),$q(1,7),$q(1,8),$q(1,9),$q(1,10),$q(1,11),$q(1,12),$q(1,13),$q(1,5),$q(1,6),$q(1,7),$q(1,8),$q(1,9),$q(1,10),$q(1,11),$q(1,12),$q(1,13),$q(1,14),$q(1,6),$q(1,7),$q(1,8),$q(1,9),$q(1,10),$q(1,11),$q(1,12),$q(1,13),$q(1,14),$q(1,15),$q(1,7),$q(1,8),$q(1,9),$q(1,10),$q(1,11),$q(1,12),$q(1,13),$q(1,14),$q(1,15),$q(1,16),$q(1,8),$q(1,9),$q(1,10),$q(1,11),$q(1,12),$q(1,13),$q(1,14),$q(1,15),$q(1,16),$q(1,17),$q(1,9),$q(1,10),$q(1,11),$q(1,12),$q(1,13),$q(1,14),$q(1,15),$q(1,16),$q(1,17),$q(1,18),$q(1,10),$q(1,11),$q(1,12),$q(1,13),$q(1,14),$q(1,15),$q(1,16),$q(1,17),$q(1,18),$q(1,19))
  398.  
  399. (c85) /* 1. Gauss Elimination */
  400. invert(hilbert10);
  401. Time= 1210 msecs
  402. |$label(0,15,Times New Roman,$(d85$))$matrix(10,10,100,$in( - )4950,79200,$in( - )600600,2522520,$in( - )6306300,9609600,$in( - )8751600,4375800,$in( - )923780,$in( - )4950,326700,$in( - )5880600,47567520,$in( - )208107900,535134600,$in( - )$num(832431600),$num(770140800),$in( - )389883780,83140200,79200,$in( - )5880600,112907520,$in( - )$num(951350400),$num(4281076800),$in( - )$num(11237826600),$num(17758540800),$in( - )$num(16635041280),$num(8506555200),$in( - )$num(1829084400),$in( - )600600,47567520,$in( - )$num(951350400),$num(8245036800),$in( - )$num(37875637800),$num(101001700800),$in( - )$num(161602721280),$num(152907955200),$in( - )$num(78843164400),$num(17071454400),2522520,$in( - )208107900,$num(4281076800),$in( - )$num(37875637800),$num(176752976400),$in( - )$num(477233036280),$num(771285715200),$in( - )$num(735869534400),$num(382086104400),$in( - )$num(83223340200),$in( - )6306300,535134600,$in( - )$num(11237826600),$num(101001700800),$in( - )$num(477233036280),$num(1301544644400),$in( - )$num(2121035716800),$num(2037792556800),$in( - )$num(1064382719400),$num(233025352560),9609600,$in( - )$num(832431600),$num(17758540800),$in( - )$num(161602721280),$num(771285715200),$in( - )$num(2121035716800),$num(3480673996800),$in( - )$num(3363975014400),$num(1766086882560),$in( - )$num(388375587600),$in( - )8751600,$num(770140800),$in( - )$num(16635041280),$num(152907955200),$in( - )$num(735869534400),$num(2037792556800),$in( - )$num(3363975014400),$num(3267861442560),$in( - )$num(1723286307600),$num(380449555200),4375800,$in( - )389883780,$num(8506555200),$in( - )$num(78843164400),$num(382086104400),$in( - )$num(1064382719400),$num(1766086882560),$in( - )$num(1723286307600),$num(912328045200),$in( - )$num(202113826200),$in( - )923780,83140200,$in( - )$num(1829084400),$num(17071454400),$in( - )$num(83223340200),$num(233025352560),$in( - )$num(388375587600),$num(380449555200),$in( - )$num(202113826200),$num(44914183600))
  403.  
  404. (c86) hilbert10.%;
  405. Time= 760 msecs
  406. |$label(0,15,Times New Roman,$(d86$))$matrix(10,10,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1)
  407.  
  408. (c87) /* 2. Invert by Hankel Method (the fastest method) */
  409. invert_hankel(hilbert10);
  410. Time= 269 msecs
  411. |$label(0,15,Times New Roman,$(d87$))$matrix(10,10,100,$in( - )4950,79200,$in( - )600600,2522520,$in( - )6306300,9609600,$in( - )8751600,4375800,$in( - )923780,$in( - )4950,326700,$in( - )5880600,47567520,$in( - )208107900,535134600,$in( - )$num(832431600),$num(770140800),$in( - )389883780,83140200,79200,$in( - )5880600,112907520,$in( - )$num(951350400),$num(4281076800),$in( - )$num(11237826600),$num(17758540800),$in( - )$num(16635041280),$num(8506555200),$in( - )$num(1829084400),$in( - )600600,47567520,$in( - )$num(951350400),$num(8245036800),$in( - )$num(37875637800),$num(101001700800),$in( - )$num(161602721280),$num(152907955200),$in( - )$num(78843164400),$num(17071454400),2522520,$in( - )208107900,$num(4281076800),$in( - )$num(37875637800),$num(176752976400),$in( - )$num(477233036280),$num(771285715200),$in( - )$num(735869534400),$num(382086104400),$in( - )$num(83223340200),$in( - )6306300,535134600,$in( - )$num(11237826600),$num(101001700800),$in( - )$num(477233036280),$num(1301544644400),$in( - )$num(2121035716800),$num(2037792556800),$in( - )$num(1064382719400),$num(233025352560),9609600,$in( - )$num(832431600),$num(17758540800),$in( - )$num(161602721280),$num(771285715200),$in( - )$num(2121035716800),$num(3480673996800),$in( - )$num(3363975014400),$num(1766086882560),$in( - )$num(388375587600),$in( - )8751600,$num(770140800),$in( - )$num(16635041280),$num(152907955200),$in( - )$num(735869534400),$num(2037792556800),$in( - )$num(3363975014400),$num(3267861442560),$in( - )$num(1723286307600),$num(380449555200),4375800,$in( - )389883780,$num(8506555200),$in( - )$num(78843164400),$num(382086104400),$in( - )$num(1064382719400),$num(1766086882560),$in( - )$num(1723286307600),$num(912328045200),$in( - )$num(202113826200),$in( - )923780,83140200,$in( - )$num(1829084400),$num(17071454400),$in( - )$num(83223340200),$num(233025352560),$in( - )$num(388375587600),$num(380449555200),$in( - )$num(202113826200),$num(44914183600))
  412.  
  413. (c88) %.hilbert10;
  414. Time= 770 msecs
  415. |$label(0,15,Times New Roman,$(d88$))$matrix(10,10,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1)
  416.  
  417. (c89) /* Clean up */
  418. (remarray(mr,luindex,stoepsa,hanksa,pshanks2a,pshanks3a,hilberta),
  419.  remvalue(ms2,ms2sym,mr3,mf3,q,qr,r,toeps2,toepn3,toepf3,stoeps2,stoepn3,stoepf3),
  420.  remvalue(hanks2,hankn3,hankf3,pshanks3,pshankn3,pshankf3,hilbert10),
  421.  reset(showtime))$
  422.  
  423. (c90) /* Clean up */ 
  424. (remarray(n),remvalue(mm,nn,ff))$
  425.